iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
Modern Web

.NET教我做人系列 第 9

Day 9 開始我們的 Web Api旅程

  • 分享至 

  • xImage
  •  

終於,開始要寫第一支WebApi,哪我就直接開始今天的主題了~~~

快速創起第一支API

首先,我們先來開啟我們的terimal後開始創第一個專案,這裡我們先輸入第一行指令

dotnet new webapi -n Demo -o Demo

就可以看到出現了新的資料夾「Demo」,我們先用VS Code來看看裡面有甚麼東西
https://ithelp.ithome.com.tw/upload/images/20220915/20139256VDM7eInhJa.jpg

再來可以先來執行看看會有甚麼東西,如果忘記怎麼啟動的話可以回到第二天看喔
啟動後可以在DEBUG的地方看到你啟動的路徑
https://ithelp.ithome.com.tw/upload/images/20220915/20139256LXSanft9XV.png

然後在瀏覽器輸入路徑/WeatherForecast就可以看到第一支Api了
https://ithelp.ithome.com.tw/upload/images/20220915/20139256OyVGN5GyK9.jpg

專案介紹

Properties/launchSetting.json

用來放我們偵錯專案時套用的環境設定,例如說我們偵錯的時候預設要打開哪個頁面(launchUrl)就是在這邊設定

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,                // 啟動 Windows 身分驗證
    "anonymousAuthentication": true,               // 啟動匿名驗證
    "iisExpress": {
      "applicationUrl": "http://localhost:59278",  // 應用程式啟動的 URL 路徑
      "sslPort": 44326                             // 啟動 SSL 的連接埠
    }
  },
  "profiles": {
    "demo": {
      "commandName": "Project",                    // 執行應用程式的模式
      "dotnetRunMessages": true,
      "launchBrowser": true,                       // 是否啟動瀏覽器
      "launchUrl": "swagger",                      // 啟動瀏覽器後的相對 URL 位置
      "applicationUrl": "https://localhost:7284;http://localhost:5032",  
      // 應用程式啟動的 URL 路徑
      "environmentVariables": {                   // 設定環境變數
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

appsettings.json

用來放組態資料,像是連線字串、Log 的紀錄層級等等就會丟在這
在.NET Core 已經將不同職責的設定區塊拆分出去給appsettings.json、.csproj 等等,並且可以繫結強型別,所以更乾淨了

Program.cs

  • 整個應用程式的進入點
  • 設定服務的行為、註冊依賴注入相關的東西就丟在這,像之前註冊 AutoMapper 服務的時候就是在這裡設定
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

WeatherForecastController.cs

  • [ApiController] 很明顯告訴我們這是個 Api Controller,而接著的
  • [Route("[controller]")] 用來決定我們這個 controller 的路由
  • Route 的內容 [controller],所以會直接採用當下.cs的名稱,統一格式{自訂}+Controller.cs
  • [HttpGet()]這個部份用來制定我們該方法所對應的 HTTP Method,這跟Restful有很大的關西
using Microsoft.AspNetCore.Mvc;

namespace demo.Controllers;

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

今天我只簡單的做了幾個比較重要的介紹,那我們今天就到這裡了~


上一篇
Day 8 依賴注入(DI)
下一篇
Day10 NuGet是我們的好捧友
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言